import Notify from '@vant/weapp/notify/notify';

import {
    selectVisitorRecordByIntervieweeIdRq,
    selectVisitorRecordByUserIdRq,
    updateVisitorPersonStatusRq
} from "../../../../api/meeting/visitorIinvitation.js"

import {
    selfFormatTimeYMDHM
} from "../../../../utils/util.js"

Page({

    /**
     * 页面的初始数据
     */
    data: {
        tabTitle: '预约记录',
        userDetail: {},
        changeData: false,
        // 预约
        reservationPageNum: 1,
        reservationPageSize: 10,
        reservationDataList: [],
        reservationIsAll: false,
        // 审核
        verifyPageNum: 1,
        verifyPageSize: 10,
        verifyDataList: [],
        verifyIsAll: false,
        //
        dialogShow: false,
        dialogId: null,
        dialogContent: null,
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        let _this = this;
        let userDetail = wx.getStorageSync('user')
        _this.setData({
            ...options,
            userDetail,
        })

        // 获取-预约记录 数据
        _this.getReservationData();
        // 获取-预约审核 数据
        _this.getVerifyData();
    },

    // 获取数据
    getDataList() {
        let _this = this;
        let tabTitle = _this.data.tabTitle
        if (tabTitle == '预约记录') {
            _this.getReservationData()
        } else if (tabTitle == '预约审核') {
            _this.getVerifyData()
        } else {
            wx.showToast({
                title: `tab 切换错误(${tabTitle})`,
                icon: 'none',
            });
            return;
        }
    },

    // 获取-预约记录 数据
    getReservationData() {
        let _this = this;
        // 是否全部加载完成
        if (_this.data.reservationIsAll) {
            return;
        }
        selectVisitorRecordByIntervieweeIdRq({
            pageNum: _this.data.reservationPageNum,
            pageSize: _this.data.reservationPageSize,
            intervieweeId: _this.data.userDetail.id
        }).then(res => {
            console.log('getReservationData', res);
            let queryDataList = res.data.records;
            if (queryDataList && queryDataList.length > 0) {
                let reservationDataList = _this.data.reservationDataList.concat(_this.formartData(queryDataList))
                _this.setData({
                    reservationDataList,
                    reservationPageNum: _this.data.reservationPageNum + 1
                })
            } else {
                _this.setData({
                    reservationIsAll: true
                })
            }
        })
    },

    // 获取-预约审核 数据
    getVerifyData() {
        let _this = this;
        // 是否全部加载完成
        if (_this.data.verifyIsAll) {
            return;
        }
        selectVisitorRecordByUserIdRq({
            pageNum: _this.data.verifyPageNum,
            pageSize: _this.data.verifyPageSize,
            userId: _this.data.userDetail.id
        }).then(res => {
            console.log('getVerifyData', res);
            let queryDataList = res.data.records;
            if (queryDataList && queryDataList.length > 0) {
                let verifyDataList = _this.data.verifyDataList.concat(_this.formartData(queryDataList))
                _this.setData({
                    verifyDataList,
                    verifyPageNum: _this.data.verifyPageNum + 1
                })
            } else {
                _this.setData({
                    verifyIsAll: true
                })
            }
        })
    },

    // 格式化数据
    formartData(list) {
        return list.map(item => {
            let color = "#3794FF"
            let verifyShow = false;
            if (item.status == 0) { // 待审核
                color = "#3794FF"
                verifyShow = true;
            } else if (item.status == 1) { // 审核通过
                color = "#62c855"
            } else if (item.status == 2) { // 审核驳回
                color = "red"
            }
            item.fontColor = color;
            item.verifyShow = verifyShow;
            item.visitTimeFormat = selfFormatTimeYMDHM(item.visitTime);
            return item;
        })
    },

    // tab 切换
    tabClickSwitch(event) {
        this.setData({
            tabTitle: event.detail.title,
        })
    },

    // 显示-弹出框
    showDialog(e) {
        console.log('showDialog', e);
        let _this = this
        _this.setData({
            dialogShow: true,
            dialogId: e.currentTarget.dataset.id,
            dialogContent: null
        })
    },

    // 弹出框-审核
    dialogVerify(e) {
        console.log('dialogSuccess', e);
        let status = e.currentTarget.dataset.status;
        let _this = this
        // 驳回 需要输入描述信息
        if (status == 2 && !_this.data.dialogContent) {
            Notify({
                type: 'danger',
                message: '请输入驳回原因!'
            });
            return
        }
        updateVisitorPersonStatusRq({
            id: _this.data.dialogId,
            status,
            rejectContent: _this.data.dialogContent,
        }).then(res => {
            console.log('updateVisitorPersonStatusRq', res);
            if (res.code != 0) {
                Notify({
                    type: 'danger',
                    message: res.msg
                });
            }
            _this.setData({
                // 预约
                reservationPageNum: 1,
                reservationPageSize: 10,
                reservationDataList: [],
                reservationIsAll: false,
                // 审核
                verifyPageNum: 1,
                verifyPageSize: 10,
                verifyDataList: [],
                verifyIsAll: false,
                //
                dialogShow: false,
                dialogId: null,
                dialogContent: null
            })
            // 获取-预约记录 数据
            _this.getReservationData();
            // 获取-预约审核 数据
            _this.getVerifyData();
        })
    },

    // 弹出框-输入框：输入内容时触发
    dialogInput(e) {
        let _this = this
        console.log('dialogInput', e.detail);
        _this.setData({
            dialogContent: e.detail,
        })
    },

    // 跳转-添加
    goAdd() {
        wx.navigateTo({
            url: '/pages/meeting/visitorIinvitation/add/add?title=预约',
        })
    },
    
    // 跳转-详情、修改
    goDetail(e) {
        console.log('goDetail', e);
        let id = e.currentTarget.dataset.id
        let type = e.currentTarget.dataset.type
        let urlParam = "?type=" + type;
        if (type == 'verify') {
            urlParam = urlParam + "&title=审核" + "&id=" + id
        } else if (type == 'detail') {
            urlParam = urlParam + "&title=详情" + "&id=" + id
        }
        wx.navigateTo({
            url: '/pages/meeting/visitorIinvitation/detail/detail' + urlParam,
        })
    },


    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        let _this = this;
        if (_this.data.changeData) {
            _this.setData({
                dataChange: false,
                // 预约
                reservationPageNum: 1,
                reservationPageSize: 10,
                reservationDataList: [],
                reservationIsAll: false,
                // 审核
                verifyPageNum: 1,
                verifyPageSize: 10,
                verifyDataList: [],
                verifyIsAll: false,
            })
            // 获取-预约记录 数据
            _this.getReservationData();
            // 获取-预约审核 数据
            _this.getVerifyData();
        }
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {
        console.log('onReachBottom');
        let _this = this;
        // 获取数据
        _this.getDataList()
    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },
})